// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0

Button1 := Rectangle {
//      ^warning{':=' to declare a component is deprecated. The new syntax declare components with 'component MyComponent {'. Read the documentation for more info}
    property <bool> cond;
    accessible-role: cond ? button : AccessibleRole.text;
//                   ^error{The `accessible-role` property must be a constant expression}

    rr := Rectangle {
        init => {
            self.accessible-role = AccessibleRole.text;
//          ^error{The property must be known at compile time and cannot be changed at runtime}
        }
    }
}

Button2 := Rectangle {
//      ^warning{':=' to declare a component is deprecated. The new syntax declare components with 'component MyComponent {'. Read the documentation for more info}
    accessible-label: "the button";
//                    ^error{The `accessible-label` property can only be set in combination to `accessible-role`}
}

Button3 := Rectangle {
//      ^warning{':=' to declare a component is deprecated. The new syntax declare components with 'component MyComponent {'. Read the documentation for more info}
    Rectangle {
        accessible-role: text;
        accessible-label: "the button";
    }
}

export Test := Window {
//          ^warning{':=' to declare a component is deprecated. The new syntax declare components with 'component MyComponent {'. Read the documentation for more info}

    Button1 { }
    Button1 { accessible-description: "ok"; } // ok because Button1 has a role
    Button2 { accessible-role: none; }
    Button2 { }
    Button3 {}
    Button3 { accessible-description: "error";}
//                                    ^error{The `accessible-description` property can only be set in combination to `accessible-role`}
}
